package com.shadow.demo.decompilation;

import java.io.File;

public class Step2Unzip {

    public static int INDEX = 1;

    // 解压jar
    public static void main(String[] args) {
        File rootDir = new File(Config.TARGET1_DIRECTORY);
        buildDirectory(rootDir);
    }

    public static void buildDirectory(File dir) {
        if (!dir.exists() || !dir.isDirectory()) {
            System.out.println("指定的路径不是一个有效的目录");
            return;
        }
        File[] files = dir.listFiles();
        if (files == null) {
            System.out.println("空目录: " + dir.getName());
            return;
        }
        for (File file : files) {
            buildTargetFile(file);
        }
    }

    public static void buildTargetFile(File file) {
        System.out.println("------------------------- 开始处理第" + INDEX + "个");
        String name = file.getName();
        if (!file.isFile()) {
            System.out.println(INDEX + "---不是文件: " + name);
        }
        String moduleName = buildModuleDir(file);
        System.out.println(INDEX + "---模块名创建： " + moduleName);
        if (!moduleName.equals("false")) {
            if (FileUtils.isPomFile(file)) {
                System.out.println(INDEX + "---pom文件: " + name);
                FileUtils.copyFile(file, new File(Config.TARGET2_DIRECTORY + FileUtils.PATH_S + moduleName, FileUtils.POM));
            } else if (FileUtils.isJarFile(file)) {
                System.out.println(INDEX + "---jar文件: " + name);
                buildJarFile(file, moduleName);
            }
        }
        System.out.println("------------------------- 结束处理第" + INDEX + "个");
        INDEX++;
    }

    public static String buildModuleDir(File file) {
        String name = file.getName();
        String moduleName = name.replace("-" + Config.VERSION + FileUtils.B_POM, "")
                .replace("-" + Config.VERSION + "-sources" + FileUtils.B_JAR, "");
        System.out.println(INDEX + "---模块名: " + moduleName);
        File module = new File(Config.TARGET2_DIRECTORY, moduleName);
        if (!module.exists()) {
            boolean isMake = module.mkdirs();
            return isMake ? moduleName : "false";
        } else {
            // throw new IllegalArgumentException("模块名重复")
            return moduleName;
        }
    }

    public static void buildJarFile(File file, String moduleName) {
        FileUtils.unzipFile(file.getPath(), Config.TARGET2_DIRECTORY + FileUtils.PATH_S + moduleName);
    }
}
